Precompile now checks using physical addresses rather than XEIP #60
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As the title implies, this switches use of XEIP(CS + IP) out for the Physical Address of the memory, which makes addresses consistent when running with paging enabled and remapping.
This fixes an issue where the CPU would "hallucinate" that it was still capable of running code that, according to the page remapping, shouldn't be there (if you were to try and make a different program run at address 0 by switching page tables, it would think it was running the cpu code at physical address 0 because it was already precompiled and didn't understand the difference between the virtual CS:IP and the physical address)
Added additional checks to try and invalidate an address if a function/precompile straddles a page border and the user tries to execute it after remapping a portion of the function to a different page. Forcing it to precompile again starting at the straddled page border(and the previous section that lead us here if we were to run that again)
Adds a check to trigger interrupt 15(bad address) if you try to execute from a page that's not a whole integer (Check is performed at precompile, error is triggered at execution time)